public class SingletonPatterns {
	public static void main(String[] args) {
		
	}
}

//饿汉式单例
class Singleton_Hungry {
	private static Singleton_Hungry singleton 
										= new Singleton_Hungry();
	private Singleton_Hungry(){}
	public static Singleton_Hungry getInstance(){
		return singleton;
	}
}


//懒汉式单例
class Singleton_Lazy {
	private static Singleton_Lazy singleton;
	private Singleton_Lazy(){}
	
	public static synchronized Singleton_Lazy getInstance(){
		if(singleton==null){
			singleton = new Singleton_Lazy();
		}
		return singleton;
	}
}


/**

单例模式的优点：
1.在内存中只有一个对象，节省内存空间。
2.避免频繁的创建销毁对象，可以提高性能。
3.避免对共享资源的多重占用。
4.可以全局访问。

适用场景：
1.需要频繁实例化然后销毁的对象。
2.创建对象时耗时过多或者耗资源过多，但又经常用到的对象。
3.有状态的工具类对象。
4.频繁访问数据库或文件的对象。
5.以及其他我没用过的所有要求只有一个对象的场景。

单例模式注意事项：

只能使用单例类提供的方法得到单例对象，不要使用反射，否则将会实例化一个新对象。
不要做断开单例类对象与类中静态引用的危险操作。
多线程使用单例使用共享资源时，注意线程安全问题。

**/